#!/bin/bash

clear;

echo "Generando archivo ejecutable del TP0..." 

make

echo
echo
echo
echo "/******************************************************/
*************Script de pruebas para el TP0*************
/******************************************************/"
echo
echo
echo

#Archivo que se usará en las pruebas
archivo_prueba="tests.bin"
echo -n "test text." > tests.bin
echo "Se creó en el directorio el archivo de prueba llamado" $archivo_prueba", cuyo contenido es:"
cat $archivo_prueba
echo 
echo

#Test 1: Ejemplo sin comando length ni delimitador
salida_octal1="test1.oct"
salida_binaria1="test1.bin.new"
echo "*************TEST NÚMERO 1*************"
echo "Se procede a codificar y decodificar" $archivo_prueba
./tp0 -i $archivo_prueba -o $salida_octal1
./tp0 -b -i $salida_octal1 -o $salida_binaria1
echo "Se crearon en el directorio los archivos de salida octal y binaria llamados" $salida_octal1 "y" $salida_binaria1 "respectivamente"
echo "Se comparará a través de la función diff el archivo de prueba original con la salida binaria recientemente obtenida.
En caso de existir alguna diferencia entre los archivos, será informada por pantalla"
diff -q $salida_binaria1 $archivo_prueba
echo

#Test 2: Ejemplo sin comando length pero con delimitador
echo "*************TEST NÚMERO 2*************"
delim="orga6620"
salida_octal2="test2.oct"
salida_binaria2="test2.bin.new"
echo "Se procede a codificar y decodificar" $archivo_prueba ", pero esta vez utilizando el delimitador" $delim
./tp0 -d $delim -i $archivo_prueba -o $salida_octal2
./tp0 -b -d $delim -i $salida_octal2 -o $salida_binaria2
echo "Se crearon en el directorio los archivos de salida octal y binaria llamados" $salida_octal2 "y" $salida_binaria2 "respectivamente
Se imprime por pantalla la salida octal, para corroborar la presencia del delimitador"
cat $salida_octal2
echo
echo "Se comparará nuevamente con diff el archivo de prueba original con la salida binaria recientemente obtenida.
De existir diferencias, serán informadas por pantalla"
diff -q $salida_binaria2 $archivo_prueba
echo

#Test 3: Ejemplo del enunciado con comando length y un espacio como delimitador
echo "*************TEST NÚMERO 3*************"
limite=4
salida_octal3="test3.oct"
salida_binaria3="test3.bin.new"
echo "Se procede a codificar y decodificar" $archivo_prueba ", pero esta vez utilizando como delimitador un espacio en blanco y un limite de" $limite 
./tp0 -l $limite -d " " -i $archivo_prueba -o $salida_octal3
./tp0 -b -d " " -i $salida_octal3 -o $salida_binaria3
echo "Se crearon en el directorio los archivos de salida octal y binaria llamados" $salida_octal3 "y" $salida_binaria3 "respectivamente
Se imprime por pantalla la salida octal, para corroborar las presencias del delimitador y el limite correspondientes"
cat $salida_octal3
echo
echo "Se comparará nuevamente con diff el archivo de prueba original con la salida binaria recientemente obtenida.
De existir diferencias, serán informadas por pantalla"
diff -q $salida_binaria3 $archivo_prueba
echo

#Notese que no se arroja salida alguna, lo cual denota que ambos archivos comparados son iguales (luego de la codificación y decodificación)

#Test 4: Ejemplo con caracter de salto de linea en el input, delimitador y length
echo "*************TEST NÚMERO 4*************"
archivo_prueba2="test2.bin"
echo -n "hola
mundo!" > $archivo_prueba2
echo "Se creó en el directorio el archivo de prueba con saltos de línea llamado" $archivo_prueba2", cuyo contenido es:"
cat $archivo_prueba2
echo
salida_octal4="test4.oct"
salida_binaria4="test4.bin.new"
echo "Se procede a codificar y decodificar" $archivo_prueba ", utilizando como delimitador" $delim "y un limite de" $limite
./tp0 -l $limite -d $delim -i $archivo_prueba2 -o $salida_octal4
./tp0 -b -d $delim -i $salida_octal4 -o $salida_binaria4
echo "Se crearon en el directorio los archivos de salida octal y binaria llamados" $salida_octal4 "y" $salida_binaria4 "respectivamente
Se imprime por pantalla la salida octal, para corroborar las presencias del delimitador y el limite correspondientes"
cat $salida_octal4
echo
echo "Se comparará nuevamente con diff el archivo de prueba original con la salida binaria recientemente obtenida.
De existir diferencias, serán informadas por pantalla"
diff -q $archivo_prueba2 $salida_binaria4
